package cn.haona.game.simb.wap.servlet.init.object;

import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;

import cn.haona.game.simb.object.department.HAB;
import cn.haona.game.simb.object.god.EntityManager;
import cn.haona.game.simb.servlet.Util;
import cn.haona.game.simb.wap.servlet.WebDefine;
import cn.haona.game.simb.wap.servlet.init.InitBasicParam;

public class InitObjectParam {

	final public static String TAG_IMPORT = "import";
	final public static String ATTR_IMPORT_NAME = "name";	
	
	final public static String ATTR_IMPORT_VALUE_CACHE = "cache";
	final public static String ATTR_IMPORT_VALUE_MYSQL = "db_mysql";	
	final public static String ATTR_IMPORT_VALUE_ENTITY = "entity";	
	
	public void initMe(String fileName)
	{
		// 字符串
		String strXML = Util.getStringFromLoadFile(fileName);

		// 解析数据
		Document document;
		try {
			document = DocumentHelper.parseText(strXML);
			// 跟元素
			Element root = document.getRootElement();

			// 导入的XML
			List<Element> elementImports = root.elements(TAG_IMPORT);
			initImport(elementImports);
		} catch (Exception e) {
			e.printStackTrace();
		}
		

	}
	

	

	/**
	 * 初始化导入
	 * 
	 * @param elements
	 */
	private void initImport(List<Element> elements) {
		Iterator<Element> iteraImprot = elements.iterator();
		// 逐个轮询Import元素
		while (iteraImprot.hasNext()) {
			Element elementImport = iteraImprot.next();
			Iterator<Attribute> iteraAtt = elementImport.attributeIterator();
			// 根据元素的Name分类初始化工作
			while (iteraAtt.hasNext()) {
				Attribute ab = iteraAtt.next();
				// 如果是cache
				if ((ab.getName().equals(ATTR_IMPORT_NAME))
						&& (ab.getText().equals(ATTR_IMPORT_VALUE_CACHE))) {
					initCache(elementImport);
				}
				// 如果是mysql
				else if ((ab.getName().equals(ATTR_IMPORT_NAME))
						&& (ab.getText().equals(ATTR_IMPORT_VALUE_MYSQL))) {
					initMysql(elementImport);
				}
				//如果是实体
				else if((ab.getName().equals(ATTR_IMPORT_NAME))
						&& (ab.getText().equals(ATTR_IMPORT_VALUE_ENTITY))) {
					initEntity(elementImport);
				}
			
			}// end while(根据元素的Name分类初始化工作)
			// elementImport.attribute(BASIC)
		}// end while(逐个轮询Import元素)
	}
	
	
	/**
	 * 初始化实体管理器
	 * @param elementCache
	 */
	private void initEntity(Element elementCache)
	{
		//得到基础配置文件的文件名
		String fileName=WebDefine.WEB_APP_REAL_PATH+elementCache.getTextTrim();
		String strXML=Util.getStringFromLoadFile(fileName);
		//创建处理类
		InitEntity ie=new InitEntity();
		ie.initMe(fileName);
	}	
	
	
	/**
	 * 初始化缓存
	 * @param elementCache
	 */
	private void initCache(Element elementCache)
	{
		//得到基础配置文件的文件名
		String fileName=WebDefine.WEB_APP_REAL_PATH+elementCache.getTextTrim();
		String strXML=Util.getStringFromLoadFile(fileName);
		//创建处理类
		InitCache ic=new InitCache();
		ic.initMe(fileName);
	}
	
	
	/**
	 * 初始化Mysql数据库
	 * @param elementMysql
	 */
	private void initMysql(Element elementMysql)
	{
		//得到基础配置文件的文件名
		String fileName=WebDefine.WEB_APP_REAL_PATH+elementMysql.getTextTrim();
		String strXML=Util.getStringFromLoadFile(fileName);
		//创建处理类
		InitDB idb=new InitDB();
		idb.initMe(fileName);
	}
}
